Skill validation system

ABSTRACT

Techniques for validating a skill associated with an endorsement are described. In an example embodiment, disclosed is a system comprising a member database and a skill reputation database. The system can receive, from a user device of an endorser, an endorsement of a recipient in a specific skill. Additionally, an endorser value for the endorser can be determined based on a reputation score that is associated with the endorser having the specific skill. Moreover, an overlap value between the endorser and the recipient can be determined based on employment information and educational information of the endorser and the recipient. Furthermore, a quality score can be calculated for the received endorsement based on the endorser value and the overlap value. Subsequently, a user interface can present, on a profile page of the recipient, a validation for the specific skill when the quality score transgresses a predetermined threshold.

PRIORITY CLAIM

This application claims priority under 35 U.S.C. 119(e) to U.S. Provisional Patent Application Ser. No. 62/401,826, filed Sep. 29, 2016, which is incorporated herein by reference in its entirety. Additionally, this application claims priority under 35 U.S.C. 119(e) to U.S. Provisional Patent Application Ser. Nos. 62/402,753 and 62/402,955, filed Sep. 30, 2016, and U.S. patent application Ser. No. 15/373,810 filed Dec. 9, 2016, which are incorporated herein by reference in their entirety.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to data processing associated with a skill validation system having an endorsement database. The endorsement database can validate an endorsement using social graph data and profile data of a member. Specifically, the present disclosure relates to techniques for calculating a quality score to validate the endorsement.

BACKGROUND

A social network system can maintain information on members, companies, organizations, employees, and employers. The social network system may maintain profile pages of members, which can include education information, employment information, and location information about a specific member. Additionally, the social network system can store information about a member's relationships (e.g., connections) with other members of the social network system. Furthermore, the social network system can store endorsements and recommendations of a member. For example, a first member of the social network can endorse a second member in a skill using an endorsement. The endorsement can be presented on the profile page of the second member.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings.

FIG. 1 is a network diagram illustrating a network environment suitable for a social network system, according to some example embodiments.

FIG. 2 is a block diagram illustrating various components of a social network system, according to some example embodiments.

FIG. 3 is a flowchart illustrating a method for validating an endorsement of a skill using a quality score for the endorsement, according to some embodiments.

FIG. 4 is a flowchart illustrating a method for calculating a quality score for an endorsement, according to some example embodiments.

FIG. 5 is a user interface diagram illustrating an example of a validation of an endorsement using the techniques described in FIGS. 3-4, according to some example embodiments.

FIG. 6 is a block diagram illustrating components of a machine, according to some example embodiments, able to read instructions from a machine-readable medium and perform any one or more of the methodologies discussed herein.

DETAILED DESCRIPTION

Example methods and systems are directed to techniques for a skill validation system having an endorsement database. More specifically, the present disclosure relates to methods, systems, and computer program products for calculating a quality score for an endorsement stored in the endorsement database. Techniques for calculating the quality score for the endorsement are described herein.

Examples merely demonstrate possible variations. Unless explicitly stated otherwise, components and functions are optional and may be combined or subdivided, and operations may vary in sequence or be combined or subdivided. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of example embodiments. It will be evident to one skilled in the art, however, that the present subject matter may be practiced without these specific details.

In current implementations, a first member of a social network system can endorse (e.g., recommend) a specific skill of a second member of the social network system by sending an endorsement for the specific skill. The first member can be the “endorser” that sends the endorsement for the specific skill to the second member. The second member can be referred to as the “recipient” of the endorsement. Additionally, the endorsement can be presented on a profile page of the recipient. The endorsement can signify that the endorser recommends the recipient as an expert or as being proficient in the corresponding skill. For example, an endorsement in accounting demonstrates that the endorser recognizes the recipient's skill in accounting.

However, in current implementations, not all endorsements received by the recipient can be a representative of the recipient's ability in the specific skill. For example, an endorsement received from a first endorser that has the specific skill and knows the recipient can be more meaningful than an endorsement received from a second endorser that does not possess the skill and does not know the recipient.

According to some embodiments, the social network system can determine the quality of the endorsement by calculating a quality score for the endorsement. For example, the quality score can be correlated to the likelihood that the endorser knows the skill. Furthermore, the quality score can further depend on the connection strength between the endorser and the recipient. Continuing with the example above, when the endorser is skilled in accounting and also works with the recipient at the same accounting firm, then the quality score for the endorsement can be higher than a quality score of an endorsement from another endorser who does not possess the skill or know the recipient.

The social network system can present a validation for the endorsement when the quality score is higher than a predetermined threshold (e.g., 80 out of 100). A score that is at or above the predetermined threshold is generally considered a high quality score. Furthermore, an endorsement with a high quality score can be classified as a high-quality endorsement. In some instances, the high-quality endorsements can be highlighted in the profile page of the recipient. For example, the validation of the endorsement is presented by having the specific skill listed as a featured skill on the profile page of the recipient when the quality score is above the predetermined threshold. Alternatively, when the quality score is below the predetermined threshold, the specific skill is not listed as the featured skill on the profile page of the recipient.

In some instances, a member of the social network system may want to search for a member having a specific skill. In current implementations, the search results for the member can be ranked based upon on the number of endorsements received for the skill. However, ranking simply based on the number of endorsements received can have many limitations. For example, a member profile page can include, without verification, an endorsement associated with a specific skill. In contrast, techniques are described herein for finding a member with a validated skill using the quality score of the endorsement. By finding the validated expert, a user can obtain accurate information about members of the social network, which can result in the user saving time and resources.

According to some embodiments, an indexing process can rank members using the quality score associated with the endorsements. For example, a higher ranking in the search results can be given to a member with endorsements that have been classified as high-quality endorsements. An endorsement is qualified as high-quality endorsement when the quality score is above a predetermined threshold (e.g., 80 out of 100). Additionally, the member profile page can include featured skills that only include high-quality endorsements. In some instances, the profile page of a member includes a section that lists the featured skills of the member. For example, the featured skills can include endorsements from endorsers that have either worked with the member or know the member. The high-quality endorsement listed on the featured skills section can include educational information or employment information about the endorser.

According to some embodiments, the social network system includes an endorsement database that uses machine learning models to determine a quality score for each endorsement. The endorsement database can include a database architecture tailored for endorsements. As a result, the endorsement database allows for a faster data retrieval rate, for the endorsements to be sent faster by an endorser, and for faster data processing related to the endorsements. For example, when a first member views a profile page of a second member, suggested endorsements of the second member can be presented faster for the first member to endorse. Furthermore, the endorsement database can include a quality endorsement metric that can deliver more insights about the endorsement received by analyzing the connections and skills of the endorser and the recipient.

Additionally, techniques described herein allow for presentation of a validated endorsement on a profile page of a member in the social network system, with the validated endorsement being associated with a specific skill. The validation can depend on the quality score associated with each endorsement. Techniques described herein allow for faster processing speed for processing the endorsement data and faster indexing of the endorsements because of the database architecture. Additionally, techniques described herein allow for a faster retrieval of the endorsement data.

FIG. 1 is a network diagram illustrating a network environment 100 suitable for a social network system, according to some example embodiments. The network environment 100 includes a server machine 110, a member database 115, a skill reputation database 118, an endorsement database 120, a first device 130 for a first user 132, and a second device 150 for a second user 152, all communicatively coupled to each other, such as via a network 190. The server machine 110, the member database 115, the skill reputation database 118, and the endorsement database 120 may form all or part of a network-based system 105 (e.g., a cloud-based server system configured to provide one or more services to the devices 130 and 150). The server machine 110, the first device 130, and the second device 150 may each be implemented in a computer system, in whole or in part, as described below with respect to FIG. 6. In some examples, the server machine 110, member database 115, skill reputation database 118, and endorsement database 120 may be implemented on a same machine, or one or more different machines.

The member database 115 can store, but is not limited to storing, member data, company data, education data, social graph data, and member activity data for the social network system service. In some instances, the member database 115 can include a plurality of databases (e.g., a first database to store profile data, a second database to store social data, a third database to store member activity data). In certain embodiments, the server machine 110 may access the information in the member database 115 using the network 190, which can be the Internet. In additional or alternative embodiments, the components of the network-based system 105 may access each other either locally (e.g., a local bus), or through a local network, such as a local area network (LAN).

The skill reputation database 118 can store a plurality of reputation scores for the members. Each reputation score in the plurality of reputation scores can be associated with a member having a skill. The reputation score for a skill of a member can be calculated using member data (e.g., job title, company name, education information, years of experience) of the member. For example, the reputation score for the accounting skill of a member who is an accountant with 15 years of experience can be 95 out of 100, which can identify that the member is proficient and an expert in accounting. The server machine 110 can access the information in the skill reputation database 118 using the network 190.

The endorsement database 120 can store a plurality of endorsements. Endorsement 125 is an example of an endorsement in the plurality of endorsements that is stored in the endorsement database 120. The endorsement 125 includes an endorser 126, a recipient 127, and a skill 128. For example, the endorser 126 endorses the recipient 127 in a specific skill 128. Both the endorser 126 and the recipient 127 can be members of the social network system. The server machine 110 can access the information in the endorsement database 120 using the network 190.

Also shown in FIG. 1 are the users 132 and 152. One or both of the users 132 and 152 may be a human user (e.g., member of the social network system), a machine user (e.g., a computer configured by a software program to interact with the device 130 or 150), or any suitable combination thereof (e.g., a human assisted by a machine or a machine supervised by a human). The user 132 is not part of the network environment 100, but is associated with the device 130 and may be a user of the device 130. For example, the device 130 may be a desktop computer, a vehicle computer, a tablet computer, a navigational device, a portable media device, a smartphone, or a wearable device (e.g., a smart watch or smart glasses) belonging to the user 132. Likewise, the user 152 is not part of the network environment 100, but is associated with the device 150. As an example, the device 150 may be a desktop computer, a vehicle computer, a tablet computer, a navigational device, a portable media device, a smartphone, or a wearable device (e.g., a smart watch or smart glasses) belonging to the user 152.

In some instances, the user 132 can be the endorser 126 that endorses the user 152, who is the recipient 127 of the endorsement 125. In another example, the user 132 can be the member searching for a member proficient in a specific skill, and the user 152 can be validated in the specific skill. For example, the server machine 110 can transmit a message to the user 152 on behalf of the user 132 using the network 190.

The network 190 may be any network that enables communication between or among machines, databases, and devices (e.g., the server machine 110 and the device 130). Accordingly, the network 190 may be a wired network, a wireless network (e.g., a mobile or cellular network), or any suitable combination thereof. The network 190 may include one or more portions that constitute a private network, a public network (e.g., the Internet), or any suitable combination thereof. Accordingly, the network 190 may include one or more portions that incorporate a local area network (LAN), a wide area network (WAN), the Internet, a mobile telephone network (e.g., a cellular network), a wired telephone network (e.g., a plain old telephone system (POTS) network), a wireless data network (e.g., a Wi-Fi network or WiMAX network), or any suitable combination thereof. Any one or more portions of the network 190 may communicate information via a transmission medium. As used herein, “transmission medium” refers to any intangible (e.g., transitory) medium that is capable of communicating (e.g., transmitting) instructions for execution by a machine (e.g., by one or more processors of such a machine), and includes digital or analog communication signals or other intangible media to facilitate communication of such software.

Any of the machines, databases, or devices described herein may be implemented in a general-purpose computer modified (e.g., configured or programmed) by software (e.g., one or more software modules) to be a special-purpose computer to perform one or more of the functions described herein for that machine, database, or device. For example, a computer system able to implement any one or more of the methodologies described herein is discussed below with respect to FIG. 6. As used herein, a “database” is a data storage resource and may store data structured as a text file, a table, a spreadsheet, a relational database (e.g., an object-relational database), a triple store, a hierarchical data store, or any suitable combination thereof. Moreover, any two or more of the machines, databases, or devices described herein may be combined into a single machine, database, or device, and the functions described herein for any single machine, database, or device may be subdivided among multiple machines, databases, or devices.

FIG. 2 is a block diagram illustrating components of social network system 210, according to some example embodiments. The social network system 210 is an example of a network-based system 105 of FIG. 1. The social network system 210 can include a user interface 202, a quality score calculator 204, an endorser value calculator 206, a recipient value calculator 207, and an overlap value calculator 208. One or more of the components 202-208 may be configured to communicate with each other (e.g., via a bus, shared memory, or a switch). The user interface 202 can provide information or cause an interface to be rendered on a client device of the member. For example, the user interface 202 can present, on a profile page of the recipient, a validation for a specific skill when the quality score of the endorsement is above a predetermined threshold.

Additionally, the social network system 210 can communicate with the member database 115 of FIG. 1, the skill reputation database 118, and the endorsement database 120 of FIG. 1. The member database 115 can store member data 220. The skill reputation database 118 can score reputation data 225 of each member in a specific skill. As shown in the example of FIG. 2, the reputation data 225 may be stored in a skill reputation database). The endorsement database 120 can store endorsement data 230.

The member data 220 can include profile data 212, which includes information from a profile page of a member. Moreover, the member data 220 can include social graph data 214 and member activity data. As later described in FIG. 3, the endorser value calculator 206 can determine an endorser value for the endorser 126 using the member data 220 of the endorser 126. Additionally, the recipient value calculator 207 can determine a recipient value for the recipient using the member data 220 of the recipient. Moreover, the overlap value calculator 208 can determine an overlap value using the member data of both the endorser and the recipient. Furthermore, the quality score calculator 204 can determine a quality score for the endorsement using the endorser value, the recipient value, and the overlap value. In some instances, some of the processing of the data for determining the endorser value, the recipient value, and overlap value can be performed by an offline data processor 240 on a periodic basis (e.g., nightly) in order to return faster calculation results.

The profile data 212 can be used to determine the endorser value and the recipient value in a specific skill. For example, the endorser value of the endorser in a specific skill depends on the endorser having profile data (e.g., job title, degree, industry) that is related to the specific skill. Similarly, the recipient value of the recipient in a specific skill depends on the recipient having profile data (e.g., job title, degree, industry) that is related to the specific skill. Profile data related to the specific skill includes having the specific skill listed on the profile page, a recommendation of the specific skill, a degree associated with the specific skill, a job title associated with the specific skill, and other educational and/or employment data associated with the specific skill. Additionally, the social network system 210 maintains an association between various skills, and skills associated with the specific skill are determined to be the same or related.

For instance, with many social network system services, when a user registers to become a member, the member is prompted to provide a variety of personal and employment information that may be displayed in a member's profile page. As used herein, personal and/or employment information is referred to as profile data 212. The profile data 212 can be used to determine the endorser value and the recipient value in a specific skill. The profile data 212 that is commonly requested and displayed as part of a member's profile includes the member's age, birthdate, gender, interests, contact information, home location (e.g., city and state), educational background (e.g., schools, majors, matriculation, graduation dates, etc.), employment history, office location, skills, professional organizations, and other such personal and/or employment information. In some embodiments, the profile data 212 may include the various skills that each member has indicated he or she possesses. Additionally, the profile data 212 may include skills of a member that have been endorsed by another member. Furthermore, the profile data 212 may include recommendations of a member from another member (e.g., co-worker).

With certain social network system services, such as professional network services, the profile data 212 can include information commonly included in a professional resume or curriculum vitae, such as information about a person's education, the company at which a person is employed, the location of the employer, an industry in which a person is employed, a job title or function, an employment history, skills possessed by a person, professional organizations of which a person is a member, and so on.

Additionally, social network system services provide their users with a mechanism for defining their relationships with other people. This digital representation of real-world relationships is frequently referred to as a social graph, which may be stored in the social graph data 214.

The social graph data 214 can be associated with an entity's presence within the social network system service. For example, consistent with some embodiments, a social graph is implemented with a specialized graph data structure in which various entities (e.g., people, companies, schools, government institutions, non-profits, and other organizations) are represented as nodes connected by edges, where the edges have different types representing the various associations and/or relationships among the different entities. The social graph data 214 of a member can include first-degree connections, second-degree connections, and so on. In one embodiment, a first member is a first-degree connection a second member when the first and second members are connected in the social network system 210. Similarly, a first member is a second-degree connection to a second member when the first and second members are not connected to each other, but both are connected to a third member. As can be inferred from the foregoing, an nth-degree connection is a connection where a first node and a second node are separated by N−1 nodes.

In some instances, the endorser value calculator 206 can determine an endorser value for the endorser 126 using profile data 212 and social graph data 214 of the endorser 126. For example, the endorser value calculator 206 can access the profile data 212 to obtain a number of endorsements given or received by the endorser 126, a number of skills listed on the profile page of the endorser 126, a consumer marketing segment, a seniority, and/or years in career, etc. Additionally, the endorser value calculator 206 can access the social graph data 214 to determine a number of connections and a number of endorsements per connection. For example, the endorser value may be determined using Equation 1.

Endorser Value=C ₀(Number of Endorsement Given by Endorser)+C ₁(Number of Endorsement Received)+C ₂(Number of Skills)+C ₃(Years in Career)+C ₄(Number of Connections)+C ₅(Number of Endorsements Per Connection),  (Equation 1)

where C₀ . . . C₅ are coefficients with a range from 0 to 1.

In some instances, the recipient value calculator 207 can determine a recipient value for the recipient 127 using profile data 212 and social graph data 214 of the recipient 127. For example, the recipient value calculator 207 can access the profile data 212 to obtain a number of endorsements given or received by the recipient 127, a number of skills listed on the profile page of the recipient 127, a consumer marketing segment, a seniority, years in career, etc. Additionally, the endorser value calculator 206 can access the social graph data 214 to determine a number of connections. For example, the recipient value is determined using Equation 2.

Recipient Value=C ₀(Number of Endorsement Given by Recipient)+C ₁(Number of Endorsement Received)+C ₂(Number of Skills)+C ₃(Years in Career)+C ₄(Number of Connections),  (Equation 2)

where C₀ . . . C₅ are coefficients with a range from 0 to 1.

In some instances, the overlap value calculator 208 can determine an overlap value between the endorser 126 and the recipient 127 using the social graph data 214 (e.g., first-degree connections) of the endorser 126 and the recipient 127. For example, the overlap value calculator 208 can access the social graph data 214 to determine a connection density between the endorser 126 and the recipient 127, as later described in FIG. 3. The overlap value for the endorser 126 and the recipient 127 can be determined based on the connection density value. For example, the overlap value is determined using Equation 3. The value for each of the common employer, common industry, common job title, common school, common degree, and common location can be a binary number, where 1 indicates that the first and second member have a profile attribute (e.g., employer, industry, job title, school, degree) in common.

Overlap Value=C ₀(Common Employer)+C ₁(Common Industry)+C ₂(Common Job Title)+C ₃(Common School)+C ₄(Common Degree)+C ₅(Common Location),  (Equation 3)

where C₀ . . . C₅ are coefficients with a range from 0 to 1.

The social network system 210 may provide a broad range of other applications and services that allow members the opportunity to share and receive information, often customized to the interests of the members. In some embodiments, members may be able to self-organize into groups, or interest groups, organized around subject matter or a topic of interest. In some embodiments, the social network system 210 may host various job listings providing details of job openings with various organizations.

In some instances, the member data 220 may include member activity data. The member activity data include members' interactions with the various applications, services, and content made available via the social network system 210, and the members' behavior (e.g., content viewed, links selected, etc.) may be used to determine the member's proficiency in a specific skill. For example, the endorser 126 viewing content associated with accounting may increase the endorser value for the accounting endorsement.

The reputation data 225 includes reputation scores of members in a specific skill. For example, a member can have a first reputation score for a first skill and a second reputation score for a second skill. The first reputation score and the second reputation score are examples of a reputation score 228. The reputation score 228 can be obtained from the skill reputation database 118 in FIG. 1. As previously mentioned, the skill reputation database 118 can be maintained by the server machine 110. For example, the reputation score for a first skill is determined using Equation 4:

Reputation Score=C ₀(Member has skill on profile)+C ₁(Member has been endorsed for skill)+C ₂(Member has been recommended for skill)+C ₃(Member has related skill on profile),  (Equation 4)

where C₀ . . . C₃ are coefficients with a range from 0 to 1.

The endorsement data 230 includes the various skills for which each member has been endorsed. For example, as described in FIG. 1, using an endorsement 125, the endorser 126 can endorse the recipient 127 in a specific skill 128. Additionally, the endorsement data 230 can include the various skills that each member has indicated he or she possesses. In some instances, the expert determination process can rank subject matter experts in a specific skill using a quality score 235 associated with the endorsement 125. As later described in FIG. 3, the quality score calculator 204 can calculate the quality score 235 for the endorsement 125 using the endorser value, the recipient value, and the overlap value.

Furthermore, the social network system 210 can be configured to process data offline or periodically using an offline data processor 240. In some instances, some or all of the calculations performed by the quality score calculator 204, endorser value calculator 206, recipient value calculator 207, and overlap value calculator 208 can be performed by the offline data processor 240. For example, the offline data processor 240 can include one or more large-scale processing servers, such as Apache™ Hadoop® servers that access the member data 220, reputation data 225, and endorsement data 230 periodically (e.g., on a nightly basis) in order to calculate the quality score, the endorser value, the recipient value, and the connection density.

Processing the member data 220, such as calculating the quality score for an endorsement, may be computationally intensive. Therefore, some of the calculating and selecting can be done offline, such as one or more parameters associated with the quality score. For example, the member data 220 may be processed offline by the endorser value calculator 206 to determine the endorser value of the endorser 126. Additionally, the member data 220 may be processed offline by the recipient value calculator 207 to determine the recipient value of the recipient 127 for a specific skill. By having the one or more parameters calculated offline, less real-time processing time may be needed by the quality score calculator 204, endorser value calculator 206, recipient value calculator 207, and overlap value calculator 208 in order to calculate the quality score for each endorsement. As a result, these parameters can be inputted in the quality score calculator 204, endorser value calculator 206, recipient value calculator 207, and overlap value calculator 208 in real-time in order to almost instantaneously present the validation of the endorsement 125 on the profile page of the recipient 127.

As will be further described with respect to FIGS. 3-4, the quality score calculator 204, in conjunction with the endorser value calculator 206, the recipient value calculator 207, and the overlap value calculator 208, can calculate a quality score 235 for an endorsement 125. Additionally, the user interface 202 can present a validation of a skill using the quality score 235.

FIG. 3 is a flowchart illustrating operations of the social network system 210 in performing a method 300 for calculating a quality score of an endorsement, according to some example embodiments. Operations in the method 300 may be performed by the social network system 210, using the quality score calculator 204, the endorser value calculator 206, the recipient value calculator 207, and the overlap value calculator 208 described above with respect to FIG. 2.

As previously mentioned, the social network system 210 can include the member database 115 storing profile data 212 of members in the social network. Additionally, the member database 115 can include social graph data 214. The profile data 212 includes employment information (e.g., job title, industry, years of experience) of the members and educational information (e.g., degree, major, school name, graduation year) of the members.

Additionally, the social network system 210 can access the skill reputation database 118 storing a plurality of reputation scores for the members. Each reputation score 228 in the plurality of reputation scores can be associated with a member having a skill. The reputation score 228 can be determined by the social network system 210 using the offline data processor 240 using the member data 220 of the member.

At operation 310, the social network system 210 can receive, from a user device (e.g., user device 130) of an endorser (e.g., user 132), an endorsement of a recipient (e.g., user 152) in a specific skill. The endorser and the recipient can be members of the social network system 210. Additionally, the received endorsement can be stored in the endorsement database 120 as the endorsement 125 with user 132 being labeled as the endorser 126, user 152 labeled as the recipient 127, and the specific skill being labeled as the skill 128. In some instances, the user interface 202 can simply access the endorsement 125 from the endorsement database 120 at operation 310. A receiver in the server machine 110 can receive the endorsement.

For example, the user 132 can endorse the user 152 in accounting by sending the endorsement 125. The endorsement 125 can be sent to the network-based system 105 by the user device 130 using network 190.

At operation 320, the endorser value calculator 206 can determine an endorser value for the endorser 126. Equation 1 describes an algorithm for determining the endorser value, according to some embodiments. In certain embodiments, operation 320 includes using a reputation score to determine the endorser value for the endorser 126. The endorser value calculator 206 can access the reputation data 225 of the endorser 126 from the skill reputation database 118. Additionally, the reputation score 228 associated with the specific skill can be obtained from the accessed reputation data 225. Equation 4 describes an algorithm for determining the reputation score, according to some embodiments. As previously mentioned, the reputation score 228 is an indication of the skill level associated with the endorser 126 in the specific skill. In some embodiments, the reputation score 228 of the endorser is calculated as part of operation 320 using equation 4 and this reputation score 228 is used by the endorser value calculator 206 to determine the endorser value for the endorser 126 based on the endorser's reputation score 228. A processor in the server machine 110 can perform the determination in real-time. In some instances, part of the determination at operation 320 can be performed offline using the offline data processor 240.

In some instances, the endorser value calculator 206 can access the reputation score 228 of the endorser 126 in the specific skill (e.g., accounting) in order to determine the endorser value. The endorser value can be directly correlated to the reputation score 228. In one example, the endorser value can be equal to the reputation score 228. For example, if the reputation score 228 of the endorser 126 in the specific skill (e.g., accounting) is a first number (e.g., 80), then the endorser value can also be the first number. In another example, the endorser value increases by a predetermined amount or ratio on a direct correlation basis with the reputation score 228.

In some instances, the reputation score 228 associated with the endorser 126 having the specific skill can depend on the endorser 126 having the specific skill listed on a profile page of the endorser 126. For example, the reputation score 228 increases when the specific skill is listed on the profile page of the endorser 126. Additionally, the reputation score 228 increases even more when the specific skill listed on the profile page of the endorser 126 has a validation. Moreover, the reputation score 228 associated with the endorser 126 having the specific skill can be associated with the endorser 126 having a job title that is related to the specific skill. Furthermore, the reputation score 228 associated with the endorser 126 having the specific skill can be associated with the endorser 126 having an educational degree that is related to the specific skill.

In some instances, the endorser value calculator 206 can access profile data 212 of the endorser 126. The profile data 212 can include years of experience, and the endorser value is in association with the years of experience of the endorser 126. For example, the endorser value can be directly proportional to the number of years of experience. The endorser value can increase by a predetermined ratio on a direct correlation basis with the number of years of experience.

At operation 330, the overlap value calculator 208 can determine an overlap value between the endorser 126 and the recipient 127 using the member data 220. For example, Equation 3 describes an algorithm for determining the overlap value. The member data 220 can be stored in member database 115. The member data 220 includes profile data 212 and social graph data 214. The profile data 212 includes employment information and the educational information of the endorser 126 and the recipient 127. Additionally, the profile data 212 accessed at operation 330 can include an endorsement of a member skill, a recommendation of the member, and the member's years of experience, location, job title, position in current company, projects completed with the company, current projects, published papers, patents, school, education information, portfolio, certifications, awards, and so on. The social graph data 214 includes the first-degree connections, the second-degree connections, and so on of the endorser 126 and the recipient 127. A processor in the server machine 110 can perform the determination in real-time. In some instances, part of the determination at operation 330 can be performed offline using the offline data processor 240.

In some instances, the overlap value is determined using the similarity between the employment information and the educational information of the endorser 126 and the recipient 127. For example, the overlap value increases when the endorser 126 and the recipient 127 studied at the same school or worked at the same company. Alternatively, the overlap value decreases when the endorser 126 and the recipient 127 studied at different schools or worked at different companies. Additionally, the overlap value can depend on similarities of other profile data 212 (e.g., location, job title, industry, certifications) of the endorser 126 and the recipient 127.

Furthermore, the overlap value can be based on a connection density value (e.g., connection strength) between the endorser 126 and the recipient 127. The overlap value calculator 208 calculates a connection density value between the recipient 127 and the endorser 126 and updates the overlap value using the connection density value. For example, when the endorser 126 has n=10 first-degree connections, there are 45 (45=Σ_(k=1) ^(n)k−1=9+8+7+6+5+4+3+2+1) unique first-degree and second-degree connections. Additionally, the endorser 126 and the recipient 127 have 20 similar connections (e.g., same members) that are either a first-degree or a second-degree connection. Therefore, based on the 20 similar connections in the 45 unique first-degree and second-degree connections, the connection density value is 44%. In one example, the overlap value can equal the connection density value.

In some instances, the overlap value further depends on a first geographic region associated with the endorser 126 and a second geographic region associated with the recipient 127. For example, the overlap value increases when the first region is the same as the second region, inferring that the endorser 126 and the recipient 127 live in the same region. Alternatively, the overlap value decreases when the first region is not the same as the second region.

At operation 340, the quality score calculator 204 calculates a quality score for the received endorsement based on the endorser value and the overlap value. The endorser value is determined at operation 320 and the overlap value is determined at operation 330. In some instances, the quality score 235 can be calculated by adding the endorser value and the overlap value. Alternatively, the quality score 235 can be calculated by averaging the endorser value and the overlap value. Additionally, the calculated quality score can be stored in the endorsement data 230 as the quality score 235 that is associated with the endorsement 125. For example, the quality score can range from 0-100. A higher score can be associated with a member that is more proficient in the skill than another member having a lower score. A processor in the server machine 110 can perform the calculation in real-time.

At operation 350, the user interface 202 presents a validation for the specific skill when the quality score transgresses a predetermined threshold. The validation can be presented on the profile page of the recipient 127. In some instances, the predetermined threshold (e.g., 50) can be preset by an administer of the social network system 210. Additionally, the predetermined threshold can be adjusted in direct correlation with the number of validated skills associated with a member. For example, the predetermined threshold is decreased when the profile page of the member does not have any skills having a validation.

The validation can be posted on the profile page of the recipient alongside the endorsements received by the recipient. The validation can be viewable by other first-degree connections of the member or by the public.

In some instances, the validation is presented by having the specific skill listed as a featured skill on the profile page of the recipient when the quality score is above the predetermined threshold. Alternatively, the specific skill is not listed as the featured skill on the profile page of the recipient when the quality score is below the predetermined threshold. Additionally, the featured skill further includes employment information (e.g., name of employer, job title) of the endorser. Furthermore, the featured skill further includes educational information (e.g., degree, major, name of school) of the endorser. An example of a featured skill is illustrated in FIG. 5.

In some instances, the social network system 210 can include an endorsement database 120 storing endorsement data 230. The endorsement data 230 includes a plurality of endorsements, with each endorsement 125 in the plurality of endorsements being associated with a sender, a receiver, and a skill. The sender is the member sending the endorsement associated with a specific skill, and the receiver is the member receiving the endorsement. Additionally, each endorsement in the plurality of endorsements stored in the endorsement database 120 can include a classification.

The method 300 can further include the quality score calculator 204 classifying the received endorsement at operation 310 as a high-quality endorsement when the quality score is above the predetermined threshold. Alternatively, the quality score calculator 204 can classify the received endorsement as a low-quality endorsement when the quality score is below the predetermined threshold. Subsequently, the classification is presented on a profile page of the recipient by the user interface 202.

In some instances, the recipient value calculator 207 can access, from the endorsement database 120, a subset of endorsements from the plurality of endorsements. The subset of endorsements have the recipient 127 as either the receiver or the sender. In another example, the subset of endorsements can only include validated endorsements (e.g., endorsements with a quality score above the predetermined threshold). Additionally, the recipient value calculator 207 can determine, using the subset of endorsements, a recipient value based on a number of endorsements received by the recipient and a number of endorsements sent by the recipient. Equation 2 describes an algorithm for determining the recipient value, according to some embodiments. For example, the recipient value can be the number of endorsements given (i.e., the recipient 127 is the sender) and received (i.e., the recipient 127 is the receiver). In another example, the recipient value may be only the number of endorsements received or the number of endorsements given. Subsequently, the quality score calculator 204 can update the quality score 235 based on the recipient value.

Similar to the calculation of the recipient value above, the endorser value calculator 206 can access, from the endorsement database 120, a subset of endorsements from the plurality of endorsements. The subset of endorsements can include endorsements that have the endorser as either the receiver or the sender. Additionally, the endorser value calculator 206 can update, using the subset of endorsements, the endorser value based on a number of endorsements received by the endorser and a number of endorsements sent by the endorser. The endorser value calculated at operation 320 can be updated based on the number of endorsements given or received by the endorser. For example, the endorser value may increase when the endorser has received more than a predetermined (e.g., 20) number of endorsements. Subsequently, the quality score calculator 204 can update the quality score 235 based on the updated endorser value.

In another example, the endorser value calculator 206 can access, from the endorsement database, a subset of endorsements from the plurality of endorsements. The subset of endorsements are endorsements that have the recipient 127 as the receiver. Additionally, the endorser value calculator 206 can determine, using the subset of endorsements, an endorsement value based on a number of endorsements received by the recipient for the specific skill. The endorser value calculated at operation 320 can be updated based on the number of endorsements received by the endorser for the specific skill. For example, the endorser value may increase when the endorser has received more than a predetermined (e.g., 5) number of endorsements for a specific skill (e.g., accounting). Subsequently, the quality score calculator 204 can update the quality score based on the endorsement value.

FIG. 4 is a flowchart illustrating operations of the social network system 210 in performing a method 400 for calculating a quality score, according to some example embodiments. Operations in the method 400 may be performed by the network-based system 105, using the quality score calculator 204, the endorser value calculator 206, the recipient value calculator 207, and the overlap value calculator 208 described above with respect to FIG. 2.

At operation 410, the endorser value calculator 206 determines an endorser value. Operation 320 in FIG. 3 describes an example of determining the endorser value. For example, the endorser value can be determined based on the number of endorsements received by the endorser (e.g., endorser 126), the number of endorsements given by the endorser, the number of skills listed on the profile of the endorser, a consumer marketing segment associated with the endorser, seniority of the endorser, first-degree connections of the endorser, years in career, number of endorsements per connection, and other member data 220 of the endorser.

At operation 420, the recipient value calculator 207 determines a recipient value. The recipient value can be determined using techniques similar to the determination of the endorser value as described at operation 320 in FIG. 3. Additionally, the recipient value can be determined based on the number of endorsements received by the recipient, the number of endorsements given by the recipient, the number of skills listed on the profile of the recipient, a consumer marketing segment associated with the recipient, seniority of the recipient, first-degree connections of the recipient, years in career, and other member data 220 of the recipient.

At operation 430, the overlap value calculator 208 can determine an overlap value between the endorser 126 and the recipient 127. Operation 330 in FIG. 3 describes an example of determining the overlap value. Additionally, the overlap value can be determined based on employment information, education information, location information, and a connection density value. The employment information includes company name, industry, job title, job function, and occupation. The education information includes school, degree, and field. The location information includes country, locale, and region.

At operation 440, the endorser value calculator 206 can obtain a reputation score for the endorser. The reputation score 228 can be accessed from the reputation data 225 stored in the skill reputation database 118. In some instances, the endorser value can be further based on the reputation score 228. Operation 320 in FIG. 3 describes an example of obtaining the reputation score.

At operation 450, the quality score calculator 204 calculates the quality score 235 associated with the endorsement 125 based on the endorser value, the recipient value, the overlap value, and the reputation value. For example, the quality score 235 can be calculated using Equation 5:

Quality Score=C ₀(Endorser Value)+C ₁(Recipient Value)+C ₂(Overlap Value)+C ₃(Reputation Value),  (Equation 5)

where C₀ . . . C₃ are coefficients with a range from 0 to 1.

In some instances, the coefficients in Equation 1-5 can be determined using a logistic regression model. For example, the logistic regression model can find the coefficients C₀-C₃ that maximizes the likelihood that the classification of the endorsement being a high-quality endorsement under the logistic regression model. As known in the art, there several efficient optimization algorithms for doing this task. In some other instances, the coefficients in Equation 1-5 can be determined using other models such as a linear regression model, a decision tree model, a support vector machine model, and a Naïve Bayesian model, or other machine learning algorithms.

Additionally, in some instances, the quality score can be updated based on the number of endorsements for the specific skill that the recipient has previously received. Furthermore, the quality score can be updated based on the number of high-quality endorsements for the specific skill that the recipient has previously received.

The quality score calculator 204 can verify an expert in a skill from a plurality of members based on the calculated quality score for the skill. The calculated quality score for the skill of the expert can be higher than a second predetermined threshold (e.g., 95), with the second predetermined threshold being higher than the predetermined threshold used at operation 350. The predetermined thresholds can be set by an administrator of the social network system 210 or determined dynamically based on user input and past quality scores for the skill.

FIG. 5 is a user interface diagram illustrating an example of a validation of a skill (e.g., a featured skill) using the techniques described in FIGS. 3-4, according to some embodiments.

A user interface 500 in FIG. 5 presents a featured skill section 510 on a profile page of a member. The featured skill section 510 includes a first featured skill 520 and a second featured skill 560. As previously mentioned, an endorsement for a skill can be presented with a validation when the quality score of the endorsement is above a predetermined threshold. The validation of the endorsement can include the skill being listed as a featured skill (e.g., first featured skill 520) on the profile page of the member.

Additionally, the first featured skill 520 can include member data 220 (e.g., employment information, educational information, social graph data) of the endorser (e.g., the endorser 126). For example, the first featured skill 520 includes employment information 530 of the endorsers. The employment information can include the employer name, which can be presented by validating the skill as being endorsed by coworkers of the recipient (e.g., the recipient 127). Moreover, the first featured skill 520 includes social graph data 540 of the viewer of the profile, such as including common connections of the viewer that have endorsed the member. The first featured skill 520 can also include the total number 550 of endorsements received for the skill.

In another example, the second featured skill 560 highlights leaders 570 (e.g., influencers, senior leaders, executives) that have endorsed the recipient. Furthermore, the second featured skill 560 can highlight relevant viewer information 580, such as when the viewer endorsed the recipient in the skill.

According to various example embodiments, one or more of the methodologies described herein facilitate an endorsement validation of a skill for a member using the member data 220. Additionally, using the database structure illustrated in FIG. 2, the data processing associated with the validation of the endorsement is in real time by using the offline data processor 240 for some calculations. For example, the social network system 210 can use the offline data processor 240 in such a way as to allow efficient retrieval and processing of the information in order to present the validation in real time.

When these effects are considered in aggregate, one or more of the methodologies described herein may obviate a need for certain human efforts or resources that otherwise would be involved in calculating the quality score and validating the endorsement. Furthermore, computing resources used by one or more machines, databases, or devices (e.g., within the network environment 100) may similarly be reduced (e.g., by pre-determining the endorser value and the recipient value). Examples of such computing resources include processor cycles, network traffic, memory usage, data storage capacity, power consumption, and cooling capacity.

The validation process allows job seekers, recruiters, and market analysts to quickly find accurate information (e.g., subject matter experts) in the social network system 210. The user interface 202 provides structure to search results, which enables fast navigation and discovery.

In order for a user to have a great search experience, correctness and performance are key. Conventional approaches either sacrifice correctness or do not perform fast enough. The methodologies described herein facilitate accurate skill determination by removing false positives using a validation process using data available in the social network system 210. Additionally, by using the offline data processor 240 to perform some of the calculations when dealing with very large data sets, such as the member data 220, the results can be presented faster than they would be using current conventional approaches.

Example Machine Architecture and Machine-Readable Medium

FIG. 6 is a block diagram illustrating components of a machine 600, according to some example embodiments, able to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein. Specifically, FIG. 6 shows a diagrammatic representation of the machine 600 in the example form of a computer system, within which instructions 616 (e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine 600 to perform any one or more of the methodologies discussed herein may be executed. For example, the instructions 616 may cause the machine to execute the flow diagrams of FIGS. 3 and 4. Additionally, or alternatively, the instructions 616 may implement the processes performed by the quality score calculator 204, endorser value calculator 206, recipient value calculator 207, overlap value calculator 208 of FIG. 2, and so forth. The instructions 616 transform the general, non-programmed machine into a particular machine programmed to carry out the described and illustrated functions in the manner described. In alternative embodiments, the machine 600 operates as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 600 may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 600 may comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions 616, sequentially or otherwise, that specify actions to be taken by the machine 600. Further, while only a single machine 600 is illustrated, the term “machine” shall also be taken to include a collection of machines 600 that individually or jointly execute the instructions 616 to perform any one or more of the methodologies discussed herein.

The machine 600 may include processors 610, memory/storage 630, and I/O components 650, which may be configured to communicate with each other such as via a bus 602. In an example embodiment, the processors 610 (e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 612 and a processor 614 that may execute the instructions 616. The term “processor” is intended to include multi-core processor that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions 616 contemporaneously. Although FIG. 6 shows multiple processors, the machine 600 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiples cores, or any combination thereof. For example, the operations described in method 300 and method 400 can be performed by one or more of the processors 610.

The memory/storage 630 may include a memory 632, such as a main memory, or other memory storage, and a storage unit 636, both accessible to the processors 610 such as via the bus 602. The storage unit 636 and memory 632 store the instructions 616 embodying any one or more of the methodologies or functions described herein. The instructions 616 may also reside, completely or partially, within the memory 632, within the storage unit 636, within at least one of the processors 610 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 600. Accordingly, the memory 632, the storage unit 636, and the memory of processors 610 are examples of machine-readable media. The memory/storage 630 can store the member data 220, the reputation data 225, or the endorsement data 230.

As used herein, “machine-readable medium” means a device able to store instructions and data temporarily or permanently and may include, but is not limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., Erasable Programmable Read-Only Memory (EEPROM)), and/or any suitable combination thereof. The term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions 616. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., instructions 616) for execution by a machine (e.g., machine 600), such that the instructions, when executed by one or more processors of the machine 600 (e.g., processors 610), cause the machine 600 to perform any one or more of the methodologies described herein. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” excludes signals per se.

The I/O components 650 may include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components 650 that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones will likely include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components 650 may include many other components that are not shown in FIG. 6. The I/O components 650 are grouped according to functionality merely for simplifying the following discussion and the grouping is in no way limiting. In various example embodiments, the I/O components 650 may include output components 652 and input components 654. The output components 652 may include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibratory motor, resistance mechanisms), other signal generators, and so forth. The input components 654 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), point based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instruments), tactile input components (e.g., a physical button, a touch screen that provides location and/or force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like.

In further example embodiments, the I/O components 650 may include biometric components 656, motion components 658, environmental components 660, or position components 662, among a wide array of other components. For example, the biometric components 656 may include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram based identification), and the like. The motion components 658 may include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components 660 may include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detect concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components 662 may include location sensor components (e.g., a Global Position System (GPS) receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies. The I/O components 650 may include communication components 664 operable to couple the machine 600 to a network 680 or devices 670 via a coupling 682 and a coupling 672, respectively. For example, the communication components 664 may include a network interface component or other suitable device to interface with the network 680. In further examples, the communication components 664 may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components to provide communication via other modalities. The devices 670 may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).

Moreover, the communication components 664 may detect identifiers or include components operable to detect identifiers. For example, the communication components 664 may include Radio Frequency Identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect one-dimensional bar codes such as Universal Product Code (UPC) bar code, multi-dimensional bar codes such as Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar code, and other optical codes), or acoustic detection components (e.g., microphones to identify tagged audio signals). In addition, a variety of information may be derived via the communication components 664, such as location via Internet Protocol (IP) geolocation, location via Wi-Fi® signal triangulation, location via detecting an NFC beacon signal that may indicate a particular location, and so forth.

Transmission Medium

In various example embodiments, one or more portions of the network 680 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a LAN, a wireless LAN (WLAN), a WAN, a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a POTS network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, the network 680 or a portion of the network 680 may include a wireless or cellular network and the coupling 682 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or another type of cellular or wireless coupling. In this example, the coupling 682 may implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (1×RTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks. Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standard-setting organizations, other long-range protocols, or other data transfer technology.

The instructions 616 may be transmitted or received over the network 680 using a transmission medium via a network interface device (e.g., a network interface component included in the communication components 664) and utilizing any one of a number of well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions 616 may be transmitted or received using a transmission medium via the coupling 672 (e.g., a peer-to-peer coupling) to the devices 670. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 616 for execution by the machine 600, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.

Language

Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.

Although an overview of the inventive subject matter has been described with reference to specific example embodiments, various modifications and changes may be made to these embodiments without departing from the broader scope of embodiments of the present disclosure. Such embodiments of the inventive subject matter may be referred to herein, individually or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single disclosure or inventive concept if more than one is, in fact, disclosed.

The embodiments illustrated herein are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed. Other embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. The Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive or exclusive sense. Moreover, plural instances may be provided for resources, operations, or structures described herein as a single instance. Additionally, boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary, and particular operations are illustrated in a context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within a scope of various embodiments of the present disclosure. In general, structures and functionality presented as separate resources in the example configurations may be implemented as a combined structure or resource. Similarly, structures and functionality presented as a single resource may be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within a scope of embodiments of the present disclosure as represented by the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute software modules (e.g., code stored or otherwise embodied on a machine-readable medium or in a transmission medium), hardware modules, or any suitable combination thereof. A “hardware module” is a tangible (e.g., non-transitory) unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software encompassed within a general-purpose processor or other programmable processor. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.

Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity, and such a tangible entity may be physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware modules) at different times. Software (e.g., a software module) may accordingly configure one or more processors, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.

Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).

The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented module” refers to a hardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partially processor-implemented, a processor being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. As used herein, “processor-implemented module” refers to a hardware module in which the hardware includes one or more processors. Moreover, the one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an application programming interface (API)).

The performance of certain operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.

Some portions of the subject matter discussed herein may be presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory). Such algorithms or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing leading to a desired result. In this context, algorithms and operations involve physical manipulation of physical quantities. Typically, but not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transferred, combined, compared, or otherwise manipulated by a machine. It is convenient at times, principally for reasons of common usage, to refer to such signals using words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “numerals,” or the like. These words, however, are merely convenient labels and are to be associated with appropriate physical quantities.

Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or any suitable combination thereof), registers, or other machine components that receive, store, transmit, or display information. Furthermore, unless specifically stated otherwise, the terms “a” or “an” are herein used, as is common in patent documents, to include one or more than one instance. Finally, as used herein, the conjunction “or” refers to a non-exclusive “or,” unless specifically stated otherwise. 

1. A computer system, comprising: a processor; a storage device; a memory device holding an instruction set executable on the processor to cause the computer system to perform operations comprising: receive, from a user device of an endorser, an endorsement of a recipient in a specific skill, the endorser and the recipient being members of the social network system; determine an endorser value for the endorser based on a reputation score that is associated with the endorser for the specific skill; determine an overlap value between the endorser and the recipient based on employment information and educational information of the endorser and the recipient; calculate a quality score for the endorsement based on the endorser value and the overlap value; and cause a presentation, on a profile page of the recipient, a validation for the specific skill, when the quality score is above a predetermined threshold.
 2. The system of claim 1, further comprising: a member database storing profile data of a plurality of members in a social network system, the profile data of a member in the plurality of members including employment information of the member, educational information of the member, and skills listed on a profile page of the member; a skill reputation database storing a plurality of skills, each of the plurality of skills having a respective reputation score associated with a member of the social network system having a skill; and an endorsement database storing a plurality of endorsements, each of the endorsements including an endorser, a recipient, and a skill.
 3. The system of claim 2, wherein the reputation score is accessed from the skill reputation database.
 4. The system of claim 2, wherein the employment information and the educational information of the endorser and the recipient is retrieved from the member database.
 5. The system of claim 2, wherein the overlap value is further based on one or more of: location information, the location information including a country, a locale, and a region of the endorser and the recipient retrieved from the member database; and a connection density value for connections between the endorser and the recipient.
 6. The system of claim 2, wherein the instruction set executable on the processor further causes the computer system to perform operations comprising: store, in the endorsement database, the received endorsement of the recipient in the specific skill, and the endorser value.
 7. The system of claim 1, wherein the endorser value is further based on one or more of: a number of endorsements received by the endorser for the specific skill; a number of endorsements given by the endorser for the specific skill; a number of skills listed on the profile page of the endorser; a consumer marketing segment associated with the endorser; a seniority of the endorser; first-degree connections of the endorser in the social network system; a number of years in a current career of the endorser; and a number of endorsements per connection of the endorser.
 8. The system of claim 1, wherein the employment information includes one or more of an organization name, a company name, an industry, a job title, a job function, and an occupation.
 9. The system of claim 1, wherein the education information includes one or more of a school, a degree, and a field.
 10. The system of claim 1, further comprising: an endorser value calculator configured to determine the endorser value; an overlap value calculator configured to determine the overlap value; and a quality score calculator configured to calculate the quality score.
 11. The system of claim 1, wherein the instruction set executable on the processor further causes the computer system to perform operations comprising: update the quality score based on a number of endorsements for the specific skill that the recipient has previously received.
 12. The system of claim 1, wherein the instruction set executable on the processor further causes the computer system to perform operations comprising: update the quality score based on a number of high-quality endorsements for the specific skill that the recipient has previously received.
 13. A computer-implemented method, comprising: receiving, from a user device of an endorser, an endorsement of a recipient in a specific skill, the endorser and the recipient being members of the social network system; determining an endorser value for the endorser based on a reputation score that is associated with the endorser for the specific skill; determining an overlap value between the endorser and the recipient based on employment information and educational information of the endorser and the recipient; calculating a quality score for the endorsement based on the endorser value and the overlap value; and presenting, on a profile page of the recipient, a validation for the specific skill, when the quality score is above a predetermined threshold.
 14. The computer-implemented method of claim 13, wherein: the employment information includes one or more of an organization name, a company name, an industry, a job title, a job function, and an occupation; and the education information includes one or more of a school, a degree, and a field.
 15. The computer-implemented method of claim 13, wherein: determining the endorser value comprises accessing the reputation score from a member database storing profile data of a plurality of members in a social network system, the profile data of a member in the plurality of members including employment information of the member, educational information of the member, and skills listed on a profile page of the member; determining the overlap value comprises retrieving the employment information and the educational information of the endorser and the recipient from a skill reputation database storing a plurality of skills, each of the plurality of skills having a respective reputation score associated with a member of the social network system having a skill; and determining the endorser value comprises storing, in an endorsement database, the endorser value, the endorsement database storing a plurality of endorsements, each of the endorsements including an endorser, a recipient, and a skill.
 16. The computer-implemented method of claim 13, wherein the endorser value is further based on one or more of: a number of endorsements received by the endorser; a number of endorsements given by the endorser; a number of skills listed on the profile page of the endorser; a consumer marketing segment associated with the endorser; a seniority of the endorser; first-degree connections of the endorser in the social network system; a number of years in a current career of the endorser; and a number of endorsements per connection of the endorser.
 17. The computer-implemented method of claim 15, wherein the overlap value is further based on one or more of: location information, the location information including a country, a locale, and a region of the endorser and the recipient retrieved from the member database; and a connection density value for connections between the endorser and the recipient.
 18. The computer-implemented method of claim 13, further comprising: updating the quality score based on a number of endorsements for the specific skill that the recipient has previously received.
 19. The computer-implemented method of claim 13, further comprising: updating the quality score based on a number of high-quality endorsements for the specific skill that the recipient has previously received.
 20. A non-transitory computer-readable medium storing executable instructions thereon, which, when executed by a processor, cause the processor to perform operations including: receiving, from a user device of an endorser, an endorsement of a recipient in a specific skill, the endorser and the recipient being members of the social network system; determining an endorser value for the endorser based on a reputation score that is associated with the endorser for the specific skill; determining an overlap value between the endorser and the recipient based on employment information and educational information of the endorser and the recipient; calculating a quality score for the endorsement based on the endorser value and the overlap value; and presenting, on a profile page of the recipient, a validation for the specific skill, when the quality score is above a predetermined threshold. 